1. Field of the Invention
The present invention relates to a method, system, and program for overrun identification in data transmission.
2. Description of the Related Art
In a network environment, a network adapter on a host computer, such as an Ethernet controller, Fibre Channel controller, etc., will receive Input/Output (I/O) requests or responses to I/O requests initiated from the host. Often, the host computer operating system includes a device driver to communicate with the network adapter hardware to manage I/O requests to transmit over a network. Data packets received at the network adapter are often stored in an available allocated packet buffer in the host memory. The host computer may implement a protocol to process the packets received by the network adapter that are stored in the packet buffer, and access any I/O commands or data embedded in the packet.
For instance, the computer may implement the Transmission Control Protocol (TCP) and Internet Protocol (IP) to decode and extract the payload data in the TCP/IP packets received at the network adapter. IP specifies the format of packets, also called datagrams, and the addressing scheme. TCP is a higher level protocol which establishes a virtual connection between a destination and a source. Another protocol, Remote Direct Memory Access (RDMA) establishes a higher level connection and permits, among other operations, direct placement of data at a specified memory location at the destination.
A device driver, application or operating system can utilize significant host processor resources to handle network transmission requests to the network adapter. One technique to reduce the load on the host processor is the use of a TCP/IP Offload Engine (TOE) in which the TCP/IP protocol related operations are implemented in the network adapter hardware as opposed to the device driver or other host software, thereby saving the host processor from having to perform the TCP/IP protocol related operations. The transport protocol operations include packaging data in a TCP/IP packet with a checksum and other information, and unpacking a TCP/IP packet received from over the network to access the payload or data.
Another transport protocol operation performed by a TOE may include acknowledging the receipt of packets. Packets may be lost or dropped due to a number of factors including network congestion and overburdened resources of the receiver. If the packet sender does not receive an acknowledgment that a packet has been properly received, the packet sender can resend the packet. In the TCP/IP protocol, for example, if the packet sender does not receive an acknowledgment within a particular time period, it is assumed that the packet has been lost and the unacknowledged packet is resent.
Because waiting for the expiration of acknowledgment timers can slow the overall flow of data through a network, additional techniques are often used to detect missing packets and speed up the resending of those missing packets. For example, in the TCP/IP protocol as discussed in the RFC (Request for Comment) 2581—“TCP Congestion Control”, a Fast Retransmit procedure is described which takes advantage of the fact that in the TCP/IP protocol, packets in a message to be sent from a sender to a receiver over a network are typically sequentially ordered and each packet of the message is assigned a unique sequence number.
If the receiver receives a packet which is not expected, such as a packet that is out of sequential order, the sequence number of the last correctly received packet of that connection between the sender and receiver is reacknowledged by the receiver. This signals to the sender that either the packet order was changed or that a packet was lost. If the packets were all properly received but somewhat out of sequential order, the receiver can readily reorder the packets into correct sequential order. However, if the receiver acknowledges the same sequence number several times (typically 3 times), then the sender knows pursuant to the protocol that a simple reordering is unlikely and that the packet that followed the last acknowledged sequence number is likely lost. The sender can then resend the lost packet or packets. Various techniques may be used to resend the packets in an efficient manner such as the Fast Recovery algorithm as described in the above referenced 2581—“TCP Congestion Control”.
The multiple reacknowledgements of the sequence number of the last correctly received packet of the connection, in accordance with the Fast Retransmit algorithm, acts as a negative acknowledgement, indicating that the subsequent packet of the sequence was lost or dropped. One benefit of the Fast Retransmit algorithm is that the sender can often be informed of a missing packet without waiting for acknowledgement timers to expire. As a consequence, dead time on a connection can often be reduced.
Notwithstanding, there is a continued need in the art to improve the efficiency of data transmission.